#!/bin/bash

# ssh_key_deploy.sh - 批量分发 SSH 公钥，实现免密登录
# 该脚本用于批量向远程服务器分发 SSH 公钥，以实现免密登录。
#
# 功能：
# - 自动检查 ~/.ssh/id_rsa.pub 是否存在，若不存在则自动生成
# - 读取 servers.txt 解析用户、IP 信息
# - 使用 ssh-copy-id 进行免密登录配置
# - 显示配置结果日志

# 服务器列表存储文件
SERVER_LIST="servers.txt"
PUB_KEY="~/.ssh/id_rsa.pub"
PRIV_KEY="~/.ssh/id_rsa"

# 检查 SSH 密钥是否存在，否则生成新的密钥对
if [ ! -f "$PUB_KEY" ]; then
    echo "[INFO] SSH 公钥不存在，正在生成新的密钥对..."
    ssh-keygen -t rsa -b 4096 -N "" -f "$PRIV_KEY"
    echo "[INFO] SSH 密钥生成完成"
else
    echo "[INFO] 发现现有 SSH 密钥，跳过生成"
fi

# 读取服务器列表并分发 SSH 公钥
while IFS=',' read -r REMOTE_USER REMOTE_HOST; do
    echo "[INFO] 正在向 ${REMOTE_HOST} 分发 SSH 公钥..."
    ssh-copy-id -i "$PUB_KEY" "${REMOTE_USER}@${REMOTE_HOST}"
    echo "[SUCCESS] SSH 免密登录已配置: ${REMOTE_HOST}"
done < "$SERVER_LIST"

echo "[INFO] 所有服务器 SSH 免密登录配置完成"

